Web Application ~世界中にServiceを提供する仕組み~
https://gyazo.com/244c5751e156b3d816a64a57e9136d83
https://gyazo.com/1674e7b923045f3b9070895903fb73c1 https://docs.google.com/presentation/d/1N9AljQNAnLTofh1adOxlUno9_YjWy86NmzwFEvkhKGk/edit#slide=id.gb83e38e90d_0_504
このLectureで伝わると嬉しいこと
どんなに大きくても元は小さなパーツ。レゴと一緒。
大きいものを理解するコツ。連結ポイントで切り分けてそれぞれの役割を理解する
Computerの世界では「別れている」ことには理由がある。
お話しすること
全部つながらないと何も意味がないので、まずは最小単位から話をします。
動く状態から考えていくの大事(これはテスト駆動開発,アジャイルのところで話します)
一つの立派なweb applicationになるまで
⭐️まずは自分のPC。HTMLをクリックしたら見えた!これが最小単位
見えて嬉しいですね。これです。
クリックじゃなくてブラウザ使ってみましょう。URLのところにファイル名を。いけた!
⭐️じゃあ今度はfile://からhttps:// に。いけなくなった。
見に行く場所が変わった。
場所に対して「ください!」に「喜んで!」と返す人が必要
クライアント・サーバーモデル。
ネットワーク。これは別の機会にやりましょう。どうして相手まで届くのか?どうして途中で盗み見られないのか
さあ、httpsになったので自分のPCにおかなくて良くなりました。他の場所におきます。
おいた。これがserver
自分のPCの中にないのでみんなに公開するのが簡単になりました。
公開したことで、少しずつ欲望が出てきます。一つずつ対応していきましょう
既にあるHTMLを見てもらうだけじゃつまらん。人によって違うものを渡したい
→ Web Application
いいことばかりじゃありません。悲しいこともあります
すごい量の人に見てもらいたいなー。その時に一台のPCでいけるんだろうか?
→負荷分散(load balancer)
違うものを見せつつ…たくさんの人に見てもらう…。むむ。「同期」が難しいぞ?
→3サーバー構成(web, app, DB)
悪意のある攻撃が来るようになった!自分たちのserviceを守らないと
→ネットワークとセキュリティ。
うわー。大きいものをみんなで分担して作るの大変だぞ。どうやったらいいんだ
→MVC, マイクロサービス, BizDevOps, アジャイル, DDD, ウォーターフォール, 設計/テスト
管理するものたくさんだな……
→IaC, docker, docker-compose
その上で尽かして知っておきたいジャンル
ブラウザ使わないものもありますね。
API。ブラウザ使わない。
ネイティブアプリ。ブラウザ使わない
どこまでserverでやるか?その切れ目が良く変わります。
Native appとSwift/Java
web applicationとjavascript。NodeJS
M1はじめとした優秀なNeural engineの存在が、client sideへの移行を進めていますね
一方でGameとかはServer sideに依存が強くなってますね
その他の知識。
計算機基礎。つまりComputer Science
本質はネットワーク/通信技術。そしてハードウェア
小さい無駄が大きな非効率を生むので原理原則を知って、最適な利用を
Computerはできることが一握り。フラクタル構造。
だからこそどこかで見つけた構造がより抽象/より具体なところで同じ構造が見える。
バグ原因の見つけ方が一緒
最新技術だと巧みに「ハードウェアの限界」が隠されているので、基礎技術をどこかで学ぶことはとても大事
知っておきたい単語。なぜその単語があるの?
Web Applicationにおいて、理解しておくと良いこと
概要
世界中にServiceを提供する3つの仕組み
Web Server
CMS
Web Application
Web API